iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 22
1
Blockchain

區塊鏈應用開發實戰系列 第 22

22. 去中心化交易所事件機制

  • 分享至 

  • xImage
  •  

小明在設計了去中心化交易所得基本資料結構後,今天接著研究如何透過智能合約的事件機制,讓前端 UI 能夠得知智能合約的異動或處理完成的結果。

簡單來說,事件可以想成是紀錄智能合約執行的日誌。當交易完成時,事件發送的日誌可以一起被儲存在區塊鏈中。但智能合約內無法直接訪問這些資料,只能透過外部調用。因此在 DApps 中可以透過 Web3.js 讓前端監聽事件,如此便可達成讓智能合約內呼叫前端的一種途徑。

  • 當管理者加入一個新代幣時,紀錄代幣的編號,名稱與時間
//管理功能之事件
event TokenAddedToSystem(uint _symbolIndex, string _token, uint _timestamp);
  • 當使用者存提 ETH 以太幣或代幣時,紀錄使用者錢包地址,代幣編號,數量與時間
//用戶提領幣之事件
event DepositForTokenReceived(address indexed _from, uint indexed _symbolIndex, uint _amount, uint _timestamp);

event WithdrawalToken(address indexed _to, uint indexed _symbolIndex, uint _amount, uint _timestamp);

event DepositForEthReceived(address indexed _from, uint _amount, uint _timestamp);

event WithdrawalEth(address indexed _to, uint _amount, uint _timestamp);
  • 當使用者買賣或取消掛單時,紀錄代幣編號,使用者錢包地址,數量與價格等
//用戶買賣取消掛單之事件
event LimitSellOrderCreated(uint indexed _symbolIndex, address indexed _who, uint _amountTokens, uint _priceInWei, uint _orderKey);

event SellOrderFulfilled(uint indexed _symbolIndex, uint _amount, uint _priceInWei, uint _orderKey);

event SellOrderCanceled(uint indexed _symbolIndex, uint _priceInWei, uint _orderKey);

event LimitBuyOrderCreated(uint indexed _symbolIndex, address indexed _who, uint _amountTokens, uint _priceInWei, uint _orderKey);

event BuyOrderFulfilled(uint indexed _symbolIndex, uint _amount, uint _priceInWei, uint _orderKey);

event BuyOrderCanceled(uint indexed _symbolIndex, uint _priceInWei, uint _orderKey);

本文同時發佈於作者部落格:https://www.bdetw.com/blog


/images/emoticon/emoticon34.gif想找區塊鏈人才或想學習區塊鏈知識的夥伴。歡迎參加社群小聚,一起來輕鬆交流、互相學習成長、認識新朋友、發現新機會!
 
台北區塊鏈社群
https://bitlly.co/Q4dIK
 
BDE 區塊鏈學院 - 提供專業的區塊鏈培訓與顧問服務。
https://bitlly.co/mbDwX


上一篇
21. 去中心化交易所資料結構
下一篇
23. 去中心化交易所管理功能實作
系列文
區塊鏈應用開發實戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言